﻿namespace MicroCloud.Utils
{
    /// <summary>
    /// 提供释放非托管资源的机制
    /// </summary>
    public abstract class Disposable : IDisposable
    {
        #region 属性
        /// <summary>
        /// 资源已释放
        /// </summary>
        protected bool Disposed { get; private set; }

        #endregion

        /// <summary>
        /// 析构函数
        /// </summary>
        ~Disposable()
        {
            Dispose(false);
        }

        /// <summary>
        /// 执行与释放或重置非托管资源相关联的应用程序定义的任务
        /// </summary>
        /// <param name="disposing"></param>
        protected virtual void Dispose(bool disposing)
        {
            if (disposing)
            {
                Disposed = true;
            }
        }

        #region IDisposable
        /// <summary>
        /// 执行与释放或重置非托管资源关联的应用程序定义的任务
        /// </summary>
        public void Dispose()
        {
            Dispose(true);
            GC.SuppressFinalize(this);
        }

        #endregion


    }
}